package com.brillilab.domain.po.system;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

import org.apache.ibatis.jdbc.Null;
import org.springframework.util.StringUtils;

/**
 * <p>
 * 文件管理
 * </p>
 *
 * @author zlb
 * @since 2019-05-10
 */
@Data
@TableName("file_manage")
@JsonInclude(JsonInclude.Include.NON_NULL)
public class FileManage implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 附件Id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 存储空间名称
     */
    @TableField("bucket_name")
    private String bucketName;
    /**
     * 附件类型(1实验中tips，2评论，3试剂附件，4公告，5通知文件，6方法附件，7实验结果文件,8个人头像,9课题)
     */
    @TableField("attach_type")
    private Integer attachType;
    /**
     * 关联数据ID(如：实验Id、评论Id、公告Id等)
     */
    @TableField("refer_data_id")
    private Long referDataId;
    /**
     * 视频预览图地址
     */
    @TableField("preview_img")
    private String previewImg;
    /**
     * 语音时长
     */
    @TableField("audio_length")
    private Integer audioLength;
    /**
     * 原始附件名称
     */
    @TableField("name")
    private String name;
    /**
     * 文件路径
     */
    @TableField("path")
    private String path;
    /**
     * 文件大小
     */
    @TableField("size")
    private Long size;
    /**
     * 上传状态(-1上传失败，0未上传，1正在上传，2已上传)
     */
    @TableField("upload_status")
    private Integer uploadStatus;

    /**
     * 文件类型(0文件，1音频，2视频，3图片)
     */
    @TableField("file_type")
    private Integer fileType;

    /**
     * 资源类型
     */
    @TableField("mime_type")
    private String mimeType;

    /**
     * 上传时间
     */
    @TableField("create_time")
    private Date createTime;
    /**
     * 更新时间
     */
    @TableField("update_time")
    private Date updateTime;
    /**
     * 回调时间
     */
    @TableField("callback_time")
    private Date callbackTime;
    /**
     * 回调返回信息
     */
    @TableField("callback_info")
    private String callbackInfo;

    /**
     * 是否加密
     */
    @TableField("is_encrypt")
    private Boolean isEncrypt;

    /**
     * 上传用户Id
     */
    @TableField("user_id")
    private Long userId;
    /**
     * 是否删除
     */
    @TableField("is_delete")
    private Boolean isDelete;

    /**
     * 实验室ID
     */
    @TableField("lab_id")
    private Long labId;


    /**
     * 是否是全链接:0-否，1-是
     */
    @TableField(exist = false)
    private int isFullLink;

    public int getIsFullLink() {
        if (!StringUtils.isEmpty(path) && path.trim().startsWith("http")) {
            return 1;
        }
        return isFullLink;
    }


}
